package com.ruoyi.common.core.domain.entity.admin;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@TableName("admin_xiao_yuan_reimbursement")
public class AdminXiaoYuanReimbursement implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 主键ID */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /** 所属年份 */
//    @Excel(name = "所属年份")
    private Integer years;

    /** 所属月份 */
//    @Excel(name = "所属月份")
    private Integer month;

    // 所属月份最大值，最小值
    @TableField(exist = false)
    private Long monthMax;

    @TableField(exist = false)
    private Long monthMin;

    /** 报销日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "报销日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date accountingTime;

    // 报销日期的范围
    @TableField(exist = false)
    private Date accountingTimeMax;

    @TableField(exist = false)
    private Date accountingTimeMin;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 单价（单位：元） */
    @Excel(name = "单价（元）")
    private BigDecimal unitPrice;

    // 单价的范围
    @TableField(exist = false)
    private BigDecimal unitPriceMax;

    @TableField(exist = false)
    private BigDecimal unitPriceMin;

    /** 数量 */
    @Excel(name = "数量")
    private BigDecimal quantity;

    /** 总金额（单位：元） */
    @Excel(name = "总金额（元）")
    private BigDecimal totalAmount;

    // 总金额的范围
    @TableField(exist = false)
    private BigDecimal totalAmountMax;

    @TableField(exist = false)
    private BigDecimal totalAmountMin;

    /** 小计（单位：元） */
    @Excel(name = "小计（元）", isStatistics =  true)
    private BigDecimal subtotal;

    /** 单据凭证 */
    @Excel(name = "单据凭证", cellType= Excel.ColumnType.IMAGE)
    private String documentVoucher;

    /** 创建时间 */
    private Date createdAt;

    /** 创建人ID */
    private Long createdBy;

    /** 修改时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updatedAt;

    /** 修改人ID */
    private Long updatedBy;

    /** 是否启用(0:未启用, 1:启用中) */
//    @Excel(name = "是否启用(0:未启用, 1:启用中)")
    private Integer isActive;

    /** 是否删除(0:未启用, 1:已删除) */
//    @Excel(name = "是否删除(0:未启用, 1:已删除)")
    @TableLogic
    private Integer isDeleted;

    /** 删除时间 */
    private Date deletedAt;

    /** 租户id */
    private Long tenantId;

}
